<?xml version='1.0' encoding='utf-8'?>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Implementing Domain-Driven Design</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <link href="stylesheet.css" rel="stylesheet" type="text/css"/>
<link href="page_styles.css" rel="stylesheet" type="text/css"/>
</head>
  <body class="calibre">
<p id="filepos10756" class="calibre9"><span class="calibre10"><span class="bold">Contents</span></span></p><blockquote class="calibre14"><a href="Implementing_Domain-Driven_Desi_split_005.html#filepos61499"><span class="bold">Foreword</span></a></blockquote><blockquote class="calibre15"><a href="Implementing_Domain-Driven_Desi_split_006.html#filepos64584"><span class="bold">Preface</span></a></blockquote><blockquote class="calibre15"><a href="Implementing_Domain-Driven_Desi_split_007.html#filepos91552"><span class="bold">Acknowledgments</span></a></blockquote><blockquote class="calibre15"><a href="Implementing_Domain-Driven_Desi_split_008.html#filepos99384"><span class="bold">About the Author</span></a></blockquote><blockquote class="calibre15"><a href="Implementing_Domain-Driven_Desi_split_009.html#filepos100540"><span class="bold">Guide to This Book</span></a></blockquote><blockquote class="calibre15"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos110260"><span class="bold">Chapter 1 Getting Started with DDD</span></a></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos113906">Can I DDD?</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos127834">Why You Should Do DDD</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos161820">How to Do DDD</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos176874">The Business Value of Using DDD</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos179850">1. The Organization Gains a Useful Model of Its Domain</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos180524">2. A Refined, Precise Definition and Understanding of the Business Is Developed</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos181381">3. Domain Experts Contribute to Software Design</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos182715">4. A Better User Experience Is Gained</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos183912">5. Clean Boundaries Are Placed around Pure Models</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos184412">6. Enterprise Architecture Is Better Organized</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos185012">7. Agile, Iterative, Continuous Modeling Is Used</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos185851">8. New Tools, Both Strategic and Tactical, Are Employed</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos186640">The Challenges of Applying DDD</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos214987">Fiction, with Bucketfuls of Reality</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_010.html#filepos224264">Wrap-Up</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre15"><a href="Implementing_Domain-Driven_Desi_split_011.html#filepos226347"><span class="bold">Chapter 2 Domains, Subdomains, and Bounded Contexts</span></a></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_011.html#filepos228375">Big Picture</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_011.html#filepos230815">Subdomains and Bounded Contexts at Work</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_011.html#filepos245893">Focus on the Core Domain</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_011.html#filepos252230">Why Strategic Design Is So Incredibly Essential</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_011.html#filepos263457">Real-World Domains and Subdomains</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_011.html#filepos277888">Making Sense of Bounded Contexts</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_011.html#filepos290813">Room for More than the Model</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_011.html#filepos296914">Size of Bounded Contexts</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_011.html#filepos304150">Aligning with Technical Components</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_011.html#filepos308759">Sample Contexts</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_011.html#filepos310212">Collaboration Context</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_011.html#filepos329703">Identity and Access Context</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_011.html#filepos334448">Agile Project Management Context</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_011.html#filepos340822">Wrap-Up</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre15"><a href="Implementing_Domain-Driven_Desi_split_012.html#filepos342623"><span class="bold">Chapter 3 Context Maps</span></a></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_012.html#filepos344843">Why Context Maps Are So Essential</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_012.html#filepos349766">Drawing Context Maps</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_012.html#filepos354303">Projects and Organizational Relationships</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_012.html#filepos364610">Mapping the Three Contexts</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_012.html#filepos403702">Wrap-Up</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre15"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos405428"><span class="bold">Chapter 4 Architecture</span></a></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos410325">Interviewing the Successful CIO</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos427253">Layers</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos437594">Dependency Inversion Principle</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos443041">Hexagonal or Ports and Adapters</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos454758">Service-Oriented</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos461281">Representational State Transfer—REST</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos462144">REST as an Architectural Style</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos465294">Key Aspects of a RESTful HTTP Server</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos469709">Key Aspects of a RESTful HTTP Client</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos471236">REST and DDD</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos475711">Why REST?</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos476527">Command-Query Responsibility Segregation, or CQRS</a></blockquote></blockquote></blockquote><a></a></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos482513">Examining Areas of CQRS</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos500184">Dealing with an Eventually Consistent Query Model</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos503631">Event-Driven Architecture</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos507738">Pipes and Filters</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos517536">Long-Running Processes, aka Sagas</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos533898">Event Sourcing</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos543825">Data Fabric and Grid-Based Distributed Computing</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos546974">Data Replication</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos548901">Event-Driven Fabrics and Domain Events</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos550829">Continuous Queries</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos552898">Distributed Processing</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_013.html#filepos557731">Wrap-Up</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre15"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos559466"><span class="bold">Chapter 5 Entities</span></a></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos561600">Why We Use Entities</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos565708">Unique Identity</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos569544">User Provides Identity</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos571979">Application Generates Identity</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos582669">Persistence Mechanism Generates Identity</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos593695">Another Bounded Context Assigns Identity</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos596643">When the Timing of Identity Generation Matters</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos602631">Surrogate Identity</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos609281">Identity Stability</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos614786">Discovering Entities and Their Intrinsic Characteristics</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos617406">Uncovering Entities and Properties</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos631355">Digging for Essential Behavior</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos644096">Roles and Responsibilities</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos657584">Construction</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos664727">Validation</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos690682">Change Tracking</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_014.html#filepos692000">Wrap-Up</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre15"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos693463"><span class="bold">Chapter 6 Value Objects</span></a></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos699009">Value Characteristics</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos700694">Measures, Quantifies, or Describes</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos701357">Immutable</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos705179">Conceptual Whole</a></blockquote></blockquote></blockquote></blockquote><a></a></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos715536">Replaceability</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos718826">Value Equality</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos722738">Side-Effect-Free Behavior</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos733297">Integrate with Minimalism</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos737600">Standard Types Expressed as Values</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos753172">Testing Value Objects</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos765519">Implementation</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos781881">Persisting Value Objects</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos783960">Reject Undue Influence of Data Model Leakage</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos789023">ORM and Single Value Objects</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos796927">ORM and Many Values Serialized into a Single Column</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos800618">ORM and Many Values Backed by a Database Entity</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos815667">ORM and Many Values Backed by a Join Table</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos818514">ORM and Enum-as-State Objects</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_015.html#filepos824750">Wrap-Up</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre15"><a href="Implementing_Domain-Driven_Desi_split_016.html#filepos826005"><span class="bold">Chapter 7 Services</span></a></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_016.html#filepos832020">What a Domain Service Is (but First, What It Is Not)</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_016.html#filepos836565">Make Sure You Need a Service</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_016.html#filepos847464">Modeling a Service in the Domain</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_016.html#filepos855164">Is Separated Interface a Necessity?</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_016.html#filepos862886">A Calculation Process</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_016.html#filepos872059">Transformation Services</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_016.html#filepos872549">Using a Mini-Layer of Domain Services</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_016.html#filepos873614">Testing Services</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_016.html#filepos882056">Wrap-Up</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre15"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos883569"><span class="bold">Chapter 8 Domain Events</span></a></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos885477">The When and Why of Domain Events</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos893423">Modeling Events</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos909451">With Aggregate Characteristics</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos912182">Identity</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos914914">Publishing Events from the Domain Model</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos916411">Publisher</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos926424">Subscribers</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos932994">Spreading the News to Remote Bounded Contexts</a></blockquote></blockquote></blockquote><a></a></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos934890">Messaging Infrastructure Consistency</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos938828">Autonomous Services and Systems</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos942490">Latency Tolerances</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos946319">Event Store</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos958486">Architectural Styles for Forwarding Stored Events</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos959260">Publishing Notifications as RESTful Resources</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos973930">Publishing Notifications through Messaging Middleware</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos976777">Implementation</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos979696">Publishing the <tt class="calibre20">NotificationLog</tt></a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos993643">Publishing Message-Based Notifications</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_017.html#filepos1016670">Wrap-Up</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre15"><a href="Implementing_Domain-Driven_Desi_split_018.html#filepos1018463"><span class="bold">Chapter 9 Modules</span></a></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_018.html#filepos1020443">Designing with Modules</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_018.html#filepos1026785">Basic Module Naming Conventions</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_018.html#filepos1028091">Module Naming Conventions for the Model</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_018.html#filepos1035419">Modules of the Agile Project Management Context</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_018.html#filepos1045937">Modules in Other Layers</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_018.html#filepos1049667">Module before Bounded Context</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_018.html#filepos1050827">Wrap-Up</a></blockquote></blockquote></blockquote></blockquote><p class="calibre21"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1052297"><span class="bold">Chapter 10 Aggregates</span></a></p><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1055366">Using Aggregates in the Scrum Core Domain</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1058693">First Attempt: Large-Cluster Aggregate</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1064285">Second Attempt: Multiple Aggregates</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1070919">Rule: Model True Invariants in Consistency Boundaries</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1075436">Rule: Design Small Aggregates</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1082869">Don’t Trust Every Use Case</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1086237">Rule: Reference Other Aggregates by Identity</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1089490">Making Aggregates Work Together through Identity References</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1090957">Model Navigation</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1095192">Scalability and Distribution</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1097263">Rule: Use Eventual Consistency Outside the Boundary</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1103282">Ask Whose Job It Is</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1105344">Reasons to Break the Rules</a></blockquote></blockquote></blockquote><a></a></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1105711">Reason One: User Interface Convenience</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1108648">Reason Two: Lack of Technical Mechanisms</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1111519">Reason Three: Global Transactions</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1112452">Reason Four: Query Performance</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1112913">Adhering to the Rules</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1113444">Gaining Insight through Discovery</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1113900">Rethinking the Design, Again</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1118280">Estimating Aggregate Cost</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1121589">Common Usage Scenarios</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1125837">Memory Consumption</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1129220">Exploring Another Alternative Design</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1130900">Implementing Eventual Consistency</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1136109">Is It the Team Member’s Job?</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1139259">Time for Decisions</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1141282">Implementation</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1141723">Create a Root Entity with Unique Identity</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1146660">Favor Value Object Parts</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1148930">Using Law of Demeter and Tell, Don’t Ask</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1155516">Optimistic Concurrency</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1162037">Avoid Dependency Injection</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_019.html#filepos1163836">Wrap-Up</a></blockquote></blockquote></blockquote></blockquote><p class="calibre21"><a href="Implementing_Domain-Driven_Desi_split_020.html#filepos1165260"><span class="bold">Chapter 11 Factories</span></a></p><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_020.html#filepos1167054">Factories in the Domain Model</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_020.html#filepos1171079">Factory Method on Aggregate Root</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_020.html#filepos1171989">Creating <tt class="calibre20">CalendarEntry</tt> Instances</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_020.html#filepos1183985">Creating <tt class="calibre20">Discussion</tt> Instances</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_020.html#filepos1188195">Factory on Service</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_020.html#filepos1196346">Wrap-Up</a></blockquote></blockquote></blockquote></blockquote><p class="calibre21"><a href="Implementing_Domain-Driven_Desi_split_021.html#filepos1197602"><span class="bold">Chapter 12 Repositories</span></a></p><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_021.html#filepos1202405">Collection-Oriented Repositories</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_021.html#filepos1217590">Hibernate Implementation</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_021.html#filepos1242738">Considerations for a TopLink Implementation</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_021.html#filepos1248307">Persistence-Oriented Repositories</a></blockquote></blockquote></blockquote><a></a></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_021.html#filepos1254524">Coherence Implementation</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_021.html#filepos1271864">MongoDB Implementation</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_021.html#filepos1286811">Additional Behavior</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_021.html#filepos1292540">Managing Transactions</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_021.html#filepos1305982">A Warning</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_021.html#filepos1306699">Type Hierarchies</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_021.html#filepos1315583">Repository versus Data Access Object</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_021.html#filepos1318894">Testing Repositories</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_021.html#filepos1329595">Testing with In-Memory Implementations</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_021.html#filepos1337066">Wrap-Up</a></blockquote></blockquote></blockquote></blockquote><p class="calibre21"><a href="Implementing_Domain-Driven_Desi_split_022.html#filepos1338514"><span class="bold">Chapter 13 Integrating Bounded Contexts</span></a></p><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_022.html#filepos1341014">Integration Basics</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_022.html#filepos1345013">Distributed Systems Are Fundamentally Different</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_022.html#filepos1346999">Exchanging Information across System Boundaries</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_022.html#filepos1366898">Integration Using RESTful Resources</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_022.html#filepos1371170">Implementing the RESTful Resource</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_022.html#filepos1381154">Implementing the REST Client Using an Anticorruption Layer</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_022.html#filepos1399281">Integration Using Messaging</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_022.html#filepos1400393">Staying Informed about Product Owners and Team Members</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_022.html#filepos1420399">Can You Handle the Responsibility?</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_022.html#filepos1435868">Long-Running Processes, and Avoiding Responsibility</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_022.html#filepos1473265">Process State Machines and Time-out Trackers</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_022.html#filepos1505585">Designing a More Sophisticated Process</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_022.html#filepos1515117">When Messaging or Your System Is Unavailable</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_022.html#filepos1518437">Wrap-Up</a></blockquote></blockquote></blockquote></blockquote><p class="calibre21"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1519886"><span class="bold">Chapter 14 Application</span></a></p><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1527490">User Interface</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1529612">Rendering Domain Objects</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1530854">Render Data Transfer Object from Aggregate Instances</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1533560">Use a Mediator to Publish Aggregate Internal State</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1536389">Render Aggregate Instances from a Domain Payload Object</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1540148">State Representations of Aggregate Instances</a></blockquote></blockquote></blockquote></blockquote><a></a></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1541222">Use Case Optimal Repository Queries</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1542588">Dealing with Multiple, Disparate Clients</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1545800">Rendition Adapters and Handling User Edits</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1554338">Application Services</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1555819">Sample Application Service</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1575397">Decoupled Service Output</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1582607">Composing Multiple Bounded Contexts</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1587739">Infrastructure</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1591034">Enterprise Component Containers</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_023.html#filepos1599539">Wrap-Up</a></blockquote></blockquote></blockquote></blockquote><p class="calibre21"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1601421"><span class="bold">Appendix A Aggregates and Event Sourcing: A+ES</span></a></p><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1606259">Inside an Application Service</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1625791">Command Handlers</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1635357">Lambda Syntax</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1638807">Concurrency Control</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1646298">Structural Freedom with A+ES</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1648409">Performance</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1655756">Implementing an Event Store</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1664713">Relational Persistence</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1671639">BLOB Persistence</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1675474">Focused Aggregates</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1678675">Read Model Projections</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1684770">Use with Aggregate Design</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1686221">Events Enrichment</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1691600">Supporting Tools and Patterns</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1691980">Event Serializers</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1695029">Event Immutability</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre19"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1696243">Value Objects</a></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1704770">Contract Generation</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1708479">Unit Testing and Specifications</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre16"><blockquote class="calibre17"><blockquote class="calibre17"><blockquote class="calibre18"><a href="Implementing_Domain-Driven_Desi_split_024.html#filepos1711661">Event Sourcing in Functional Languages</a></blockquote></blockquote></blockquote></blockquote><blockquote class="calibre15"><a href="Implementing_Domain-Driven_Desi_split_025.html#filepos1714399"><span class="bold">Bibliography</span></a></blockquote><blockquote class="calibre15"><a href="Implementing_Domain-Driven_Desi_split_026.html#filepos1729130"><span class="bold">Index</span></a></blockquote><div class="mbppagebreak" id="calibre_pb_4"></div>
</body></html>
